const db = require('../db/index')

const bcrypt = require('bcryptjs')


const getUserInfo = (req, res) => {
    // console.log(req.user, 66666)
    /* 
    目的：获取用户列表数据
    + 编写sql语句
    + 执行sql  【导入连接数据库的接口】   根据id执行
    + 将获取的数据返回
    
    */
    var sql = `select id,username,nickname,email,user_pic from ev_users where id=?`
    // res.send('userinfo22222')
    db.query(sql, req.user.id, (error, results) => {
        if (error) res.cc(error)
        // 2. 执行 SQL 语句成功，但是查询到的数据条数不等于 1 if (results.length !== 1) return res.cc('获取用户信息失败！') // 3. 将用户信息响应给客户端 
        res.send({
            status: 0,
            message: '获取用户基本信息成功！',
            data: results[0]
        })

    })

}

const updateUserInfo = (req, res) => {
    // ## 更新用户

    // + 目的：更新用户
    //     + 获取表单参数==检验参数
    //         + 编写校验规则
    //         + 发送请求需要中间件校验
    //     + 编写sql语句
    //     + 执行sql语句
    //     + 返回执行后的结果===提示更新用户数据成功

    // + 2-编写sql语句
    var sql = `update ev_users set nickname=?,email=? where id=?`
    /*  + 3-执行sql语句 */
    db.query(sql, [req.body.nickname, req.body.email, req.body.id], (error, results) => {
        if (error) res.cc(error)
        console.log(results, 55554444)
        if (results.affectedRows != 1) {
            return res.cc('更新数据失败')
        }
        /*  + 返回执行后的结果===提示更新用户数据成功 */
        res.send('更新成功')

    })
    /*  + 4-返回执行后的结果===提示更新用户数据成功 */


    // res.send('update')
}

const updatepwd = (req, res) => {
    /* sql
    更改密码
    + 获取用户的原密码  跟数据库中进行匹配 匹配成功才能进行个更改  原密码匹配数据库中的密码
    + 更改就需要 将数据库中的密码换成传过来的新密码 ===将新密码写入更新
    
    
    */

    var sql = `select password from ev_users where  id=?`
    db.query(sql, req.user.id, (error, results) => {
        if (error) res.cc(error)
        console.log(results[0].password, 55554444)
        res.send('updatepwd')
        /*2-校验密码   校验原密码和数据库中的密码是否一致  */
        var flag = bcrypt.compareSync(req.body.oldPwd, results[0].password)
        if (!flag) {
            //  密码匹配不成功
            return res.cc('用户原密码不正确')
        }
        /* 匹配成功 ===就需要更新密码了
        + 对新密码进行加密
        + 在写入数据库
        
        */

        /*  + 对新密码进行加密 */
        req.body.newPwd = bcrypt.hashSync(req.body.newPwd, 10);

        var sql = `update ev_users set password=? where id=?`
        //console.log(req.user,33333)
        db.query(sql, [req.body.newPwd, req.user.id], (error2, results2) => {
            if (error2) res.cc(error2)
            console.log(results2, 55554444)
            if (results2.affectedRows != 1) {
                return res.cc('更新数据失败')
            }
            /*  + 返回执行后的结果===提示更新用户数据成功 */
            res.send('更新密码成功')

        })

    })


}

/* 更新图像 */

const updateAvatar = (req, res) => {
    /*
    图片更新
    + 校验
    + 更新update
    */
    var sql = `update ev_users  set user_pic=? where  id=?`
    db.query(sql, [req.body.avatar, req.user.id], (error, results) => {
        if (error) res.cc(error)
        console.log(results, 55554444)
        if (results.affectedRows != 1) {
            return res.cc('更新数据失败')
        }
        /*  + 返回执行后的结果===提示更新用户数据成功 */
        res.send('更新图片成功')
    })
}



module.exports = {
    getUserInfo,
    updateUserInfo,
    updatepwd,
    updateAvatar
}